#include <iostream>
#include "deque"

using namespace std;

/*
 * deque 双端数组，可以对头端进行插入删除操作
 *  deque与vector区别  都支持随机访问
 *      vector对于头部的插入删除效率低，数据量越大，效率越低
 *      deque对头部的插入删除速度比vector快
 *      vector访问元素的速度会比deque快，两者的内部实现不同
 *  deque内部有个中控器，维护每段缓冲区的内容，缓冲区中存放真实数据  类似hashtable
 *      中控器中维护的是每个缓冲区的地址
 *  构造函数
 *      deque<T> d   默认构造函数
 *      deque<T>(d.begin(), d.end())    将d[d.begin(), d.end())区间元素拷贝给本身
 *      deque<T>(n, elem)   构造函数将n个elem拷贝给本身
 *      deque<T>(const deque &d)    拷贝构造函数
 *  赋值
 *      deque& operator=(const deque &deq)  重载等号
 *      assign(d.begin(), d.end())  将d[d.begin(), d.end())区间元素拷贝赋值给本身
 *      assign(n, elem)  将n个elem拷贝赋值给本身
 *  大小
 *      deque.empty()   判断容器是否为空
 *      deque.size()    返回容器中元素的个数
 *      deque.resize(num)   重新指定容器的长度为num，若变长，则用默认值填充新位置，若变短，则删除末尾超过长度的元素
 *      deque.resize(num, elem)  重新指定容器的长度为num，若变长，则用elem填充新位置，若变短，则删除末尾超过长度的元素
 *  插入和删除  pos为迭代器，非数字索引
 *      push_back(elem)     在容器尾部添加一个元素
 *      push_front(elem)    在容器头部插入一个元素
 *      pop_back()      删除容器最后一个元素
 *      pop_front()     删除容器第一个元素
 *      insert(pos, elem)   在pos位置插入一个elem元素，并返回新数据的位置
 *      insert(pos, n, elem) 在pos位置插入n个elem元素，无返回值
 *      insert(pos, d.begin(), d.end())    在pos位置插入d[d.begin(), d.end())区间元素，无返回值
 *      clear()     清空容器中所有数据
 *      erase(d.begin(), d.end())  删除d[d.begin(), d.end())区间元素，返回下一个元素的位置
 *      erase(pos)  删除pos位置元素，返回下一个元素位置
 *  数据存取
 *      at(int idx) 返回idx索引所指位置的元素
 *      operator[idx]  返回索引idx所指的元素
 *      front()     返回容器中第一个数据元素
 *      back()      返回容器中最后一个数据元素
 *  排序
 *      sort(iterator beg, iterator end)    对beg和end区间元素进行排序  vector也支持
 *      支持随机访问迭代器的容器，都可以利用sort进行排序
 */

int main() {

    return 0;
}
